快过年了, 设计一个春联自动生成器, 给大家助助兴

您所在的位置:网站首页 春联 在线 快过年了, 设计一个春联自动生成器, 给大家助助兴

快过年了, 设计一个春联自动生成器, 给大家助助兴

2024-04-11 22:24| 来源: 网络整理| 查看: 265

1. 前言

春节是中国最隆重的传统节日,一到过年家家户户肯定是要贴春联;在春节前夕,会用大红纸张,加上浓墨书写祝福词语,在春节当天贴于门框两边,寓意着一年吉祥如意,还会将福字倒转贴于门上,有"福到临门"的意思。为了方便找到合适的春联句子,我这里就采用现成的自然语言处理接口实现了一个自动生成春联的软件,输入提示词就可以完成春联的生成,方便写春联时参考。

下面是实现的效果:

image-20220121193243829

image-20220121193306174

image-20220121193320615

image-20220121193334393

image-20220121193414356

小时候最期盼的日子就是过年,可以穿新衣服,吃平时吃不到的好吃的,吃完年夜饭一起看春晚,放鞭炮;现在生活水平逐渐提高,平时穿的吃的也不差,也没有很期待了,现在过年吃完饭大家都是盯着手机玩,感觉没有以前小时候那种感觉了。

2. 实现原理

软件是采用Qt框架设计,调用百度大脑的智能春联接口完成春联生成。

官网地址: https://ai.baidu.com/tech/nlp_apply

image-20220121155506882

image-20220121161202051

HTTP请求方法: POST 请求地址: https://aip.baidubce.com/rpc/2.0/creation/v1/couplets URL的参数:access_token 通过API Key和Secret Key获取的access_token 请求头Header:Content-Type application/json 请求参数 text 春联主题的提示字符 index 春联的索引. 默认是0,同一个提示符,多次获取时,这个索引+1就能访问后面的春联. 返回参数解释 first 春联上联:成7-9个字的上联 second 春联下联:生成7-9个字的春联下联 center 春联横批:生成4个字的春联横批

请求示例:

{ "text": "新水", "index": 0 }

返回的数据示例:

{ "couplets" : { "first": "新春新水千山绿", "second": "春色春风万户红", "center": "喜迎新春" } } 3. 示例代码

下面列出主要的核心代码,可以直接贴到自己工程里就可以使用。

3.1 获取春联接口 //获取春联 void Widget::get_CoupletText(QString terms,int index) { function_select=1; QString requestUrl; QNetworkRequest request; //存放图片BASE64编码 QString imgData; //打包请求参数赋值 QJsonObject post_data; QJsonDocument document; //设置请求地址 QUrl url; QByteArray post_param; //请求地址 requestUrl = "https://aip.baidubce.com/rpc/2.0/creation/v1/couplets"; //设置数据提交格式 request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json")); //设置请求参数: post_data.insert("text",terms); //字符串(限5字符数以内)即春联的主题 post_data.insert("index",index); //int 整数 默认为数值为0,即第一幅春联。每换一次,数值加1即可,一定数量后会返回之前的春联结果。 //构造请求 url.setUrl(requestUrl + "?access_token=" + Token); request.setUrl(url); document.setObject(post_data); post_param = document.toJson(QJsonDocument::Compact); //发送请求 manager->post(request, post_param); } 3.2 数据解析代码 //解析反馈结果 void Widget::replyFinished(QNetworkReply *reply) { int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); //读取所有数据 QByteArray replyData = reply->readAll(); qDebug()


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3